From: Konrad Rzeszutek Wilk Date: Wed, 10 Aug 2016 13:53:52 +0000 (-0400) Subject: livepatch: Move code from prepare_payload to own routine X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~440 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=ed32327715288fca9176e2fb24887c43a90fb845;p=xen.git livepatch: Move code from prepare_payload to own routine Specifically the code that is looking up f->old_addr - which can be in its own routine instead of having it part of prepare_payload. No functional change. Reviewed-by: Ross Lagerwall Signed-off-by: Konrad Rzeszutek Wilk --- diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 0c564c2cdb..a6010eb00b 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -230,6 +230,30 @@ static const char *livepatch_symbols_lookup(unsigned long addr, return n; } +/* Lookup function's old address if not already resolved. */ +static int resolve_old_address(struct livepatch_func *f, + const struct livepatch_elf *elf) +{ + if ( f->old_addr ) + return 0; + + f->old_addr = (void *)symbols_lookup_by_name(f->name); + if ( !f->old_addr ) + { + f->old_addr = (void *)livepatch_symbols_lookup_by_name(f->name); + if ( !f->old_addr ) + { + dprintk(XENLOG_ERR, LIVEPATCH "%s: Could not resolve old address of %s\n", + elf->name, f->name); + return -ENOENT; + } + } + dprintk(XENLOG_DEBUG, LIVEPATCH "%s: Resolved old address %s => %p\n", + elf->name, f->name, f->old_addr); + + return 0; +} + static struct payload *find_payload(const char *name) { struct payload *data, *found = NULL; @@ -497,23 +521,9 @@ static int prepare_payload(struct payload *payload, if ( rc ) return rc; - /* Lookup function's old address if not already resolved. */ - if ( !f->old_addr ) - { - f->old_addr = (void *)symbols_lookup_by_name(f->name); - if ( !f->old_addr ) - { - f->old_addr = (void *)livepatch_symbols_lookup_by_name(f->name); - if ( !f->old_addr ) - { - dprintk(XENLOG_ERR, LIVEPATCH "%s: Could not resolve old address of %s\n", - elf->name, f->name); - return -ENOENT; - } - } - dprintk(XENLOG_DEBUG, LIVEPATCH "%s: Resolved old address %s => %p\n", - elf->name, f->name, f->old_addr); - } + rc = resolve_old_address(f, elf); + if ( rc ) + return rc; } sec = livepatch_elf_sec_by_name(elf, ELF_BUILD_ID_NOTE);